feat: add SiftQ provider with OpenAI-compatible video APIs - #2443
Open
futurestudyspace wants to merge 1 commit into
Open
feat: add SiftQ provider with OpenAI-compatible video APIs#2443futurestudyspace wants to merge 1 commit into
futurestudyspace wants to merge 1 commit into
Conversation
futurestudyspace
force-pushed
the
feat/siftq-provider
branch
from
August 12, 2026 10:26
20e96be to
0c2c15f
Compare
Register SiftQ as an independent channel provider for the MiniMax-H3 model, with https://siftq.com/api/minimax/ as the default configurable base URL and bearer-token authentication. Expose a provider-neutral OpenAI-style asynchronous video API: - POST /v1/videos creates a video generation job - GET /v1/videos/:video_id retrieves job state - GET /v1/videos lists the current user's jobs - GET /v1/videos/:video_id/content downloads completed output - DELETE /v1/videos/:video_id cancels or deletes a job Translate these public endpoints internally to the SiftQ MiniMax-H3 V2 create, query, and delete contracts. Normalize SiftQ task states and errors into OpenAI-compatible video objects and error envelopes, while keeping native /v2 routes private to the upstream adaptor. Persist user, token, and channel task ownership so polling, download, listing, and deletion return to the channel that created the job. Add per-second quota accounting with refunds for failed submissions, model discovery, configurable channel UI support across all bundled themes, request and media validation, documentation, and acceptance evidence. Add targeted coverage for route registration, the absence of public native /v2 ingress, JSON and multipart model extraction, size/duration/reference-image conversion, task-state normalization, URL joining, bearer headers, upstream errors, task ownership, model registration, and channel configuration.
futurestudyspace
force-pushed
the
feat/siftq-provider
branch
from
August 12, 2026 10:32
0c2c15f to
f03da18
Compare
23 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
close #2442
Overview
This PR introduces two related modules:
MiniMax-H3video model.Module 1: OpenAI-compatible Video APIs
Endpoints
POST/v1/videosGET/v1/videos/{video_id}GET/v1/videosGET/v1/videos/{video_id}/contentDELETE/v1/videos/{video_id}These endpoints use the existing One API token authentication and model permission mechanisms.
Create requests
Both JSON and
multipart/form-datarequests are supported.JSON example:
{ "model": "MiniMax-H3", "prompt": "A cinematic ocean sunrise", "seconds": "5", "size": "1280x720" }Multipart example:
Supported request fields include:
modelpromptsecondssizeinput_reference.image_urlinput_referencefileVideo object
Create and retrieve operations return a consistent video object:
{ "id": "video_task_id", "object": "video", "model": "MiniMax-H3", "status": "queued", "progress": 0, "created_at": 1712697600, "prompt": "A cinematic ocean sunrise", "seconds": "5", "size": "1280x720" }The public task states are:
queuedin_progresscompletedfailedListing and content download
The video API supports:
limit,order, andafterlist parametersModule 2: SiftQ Provider
Provider configuration
This PR adds SiftQ as an independent channel provider:
SiftQMiniMax-H3https://siftq.com/api/minimax/MiniMax-H3model-list registrationSiftQ has its own:
Video parameters
Supported sizes:
size720x1280768P9:161280x720768P16:91024x17922K9:161792x10242K16:9Defaults:
model:MiniMax-H3seconds:4size:720x1280Video duration supports integer values from 4 through 15 seconds.
First-frame images can be provided as:
Asynchronous task ownership
Video task bindings persist the following information:
Retrieve, list, download, and delete operations validate that the task belongs to the current user and continue using the channel that created it.
This prevents:
Quota accounting
The
MiniMax-H3model supports per-second video quota accounting:Channel management UI
SiftQ channel configuration is included in all bundled themes:
The UI supports:
MiniMax-H3modelUsage
Create a video:
Retrieve the job:
Download the completed video:
Verification
OpenAI-compatible Video APIs
SiftQ Provider
MiniMax-H3model-list registrationMiniMax-H3presence in/api/channel/modelsBuild and tests
gofmtgo test ./router ./controller ./middleware ./model ./relay/adaptor/siftq ./relay ./relay/channeltypego build ./...The repository-wide
go test ./...run also reaches the existing network-dependentcommon/image TestDecodetest. In the test environment, its Wikimedia fixture timed out and triggered the test's pre-existing nil dereference. This is unrelated to the changes in this PR; all affected packages and the complete Go build pass.Screenshot
SiftQ channel registration
The screenshot confirms that SiftQ is registered as a distinct channel type and that a SiftQ provider channel can be created and enabled.
I have verified that this PR works as described. The relevant screenshot is attached above.